class Person:
    def __init__(self, name, age):
        self._name = name  # 约定约定：下划线开头表示"私有"属性（建议不直接访问）
        self._age = age

    # 用 @property 定义"age"属性的"获取方法"
    @property
    def age(self):
        # 可以添加额外逻辑，比如返回处理后的值
        return f"年龄：{self._age}"

    # 用 @age.setter 定义"age"属性的"设置方法"
    @age.setter
    def age(self, value):
        # 可以添加数据验证逻辑
        if not isinstance(value, int) or value < 0 or value > 150:
            raise ValueError("年龄必须是0-150之间的整数")
        self._age = value

    # 只读属性（没有 setter 方法）
    @property
    def name(self):
        return self._name


# 使用示例
p = Person("Alice", 30)

# 访问属性：直接用 .age，无需加括号
print(p.age)  # 输出：年龄：30
print(p.name)  # 输出：Alice

# 修改属性：直接赋值，会自动调用 @age.setter 装饰的方法
p.age = 35
print(p.age)  # 输出：年龄：35

# 尝试设置无效值：触发验证逻辑
p.age = 200  # 抛出 ValueError: 年龄必须是0-150之间的整数

# 尝试修改只读属性：报错（因为没有 name 的 setter 方法）
p.name = "Bob"  # 抛出 AttributeError: can't set attribute
